#ifndef __SOCKETSENDBUFF_HEADER
#define __SOCKETSENDBUFF_HEADER

#include "buff.h"
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

/*
 向客户端发送评判结果，响应报文分为header和body
 header只有一个字段，就是body_length，body是一个json串
 发送步骤分为发送header，再发送body两个步骤
 status=0，还没发送完header
 status=1，发送完header，还没发送完body
 status=2，发送完body
 */
struct SocketSendBuff: public Buff {
	static const size_t HEADER_SIZE;
	static const size_t FIELD_SIZE;
	static const size_t MAX_BODY_SIZE;

	char *header;
	char *body;
	size_t body_length;
	int status;
	int index;
	int remain;

	SocketSendBuff(const char *header_, const char *body_);
	~SocketSendBuff();

	/*
	 返回-1，出错，检查errno，
	 对于EPIPE则说明对端socket已经关闭
	 */
	ssize_t send_header(int fd);
	ssize_t send_body(int fd);
	void get_body_length();
	bool finish_header();
	bool finish_body();

	/*
	 当前版本中，SocketSendData不重用，reset()不使用
	 */
	//void reset();
};

#endif // __SOCKETSENDBUFF_HEADER
